﻿#region License

//The contents of this file are subject to the Mozilla Public License
//Version 1.1 (the "License"); you may not use this file except in
//compliance with the License. You may obtain a copy of the License at
//http://www.mozilla.org/MPL/
//Software distributed under the License is distributed on an "AS IS"
//basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
//License for the specific language governing rights and limitations
//under the License.

#endregion

using System;
using System.Linq.Expressions;

namespace DbRefactor.Infrastructure
{
	internal static class ExpressionHelper
	{
		public static object ValueFromExpression(Expression expression)
		{
			if (expression is ConstantExpression)
			{
				return (expression as ConstantExpression).Value;
			}
			var lambda = Expression.Lambda<Func<object>>(
				Expression.Convert(expression, typeof(object)),
				new ParameterExpression[0]);
			return lambda.Compile()();
		}
	}
}